package org.example.easy;

/**
 * @author yanyun zhu
 * @version 1.0
 * @date 2021/11/17 8:56    第一次题目没有完全看清，思路也有点问题
 *
 * https://leetcode-cn.com/problems/reverse-integer/
 */
public class IntReverse {

    /**
     * 思路有偏差  ,感觉也没有错，超过范围入参就错了
     * @param args
     */
//    public static int reverse(int x) {
//        String s = String.valueOf(x);
//        Boolean b = false;
//        if(s.startsWith("-")){
//            s = s.substring(1, s.length());
//            b = true;
//        }
//        char[] chars = s.toCharArray();
//        int m = chars.length - 1;
//        char[] reChars = new char[chars.length];
//
//        for(int i = m ; i >=0; i--){
//            reChars[m - i] = chars[i];
//        }
//        if(b){
//            String s1 = "-" + String.valueOf(reChars);
//            return Integer.valueOf(s1);
//        }
//        return Integer.valueOf(String.valueOf(reChars));
//    }

    /**
     * 这中方法更好
     * 还没有看完 ~
     * @param x
     * @return
     */
    public static int reverse(int x) {
        System.out.println(x);
        int rev = 0;
        while (x != 0) {
            if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
                return 0;
            }
            int digit = x % 10;
            x /= 10;
            rev = rev * 10 + digit;
        }
        return rev;
    }

    public static void main(String[] args) {
//        int reverse = reverse(9646324351);
//        System.out.println(reverse);
        int reverse = reverse(Integer.MIN_VALUE);
        System.out.println(reverse);
//        System.out.println(Integer.MAX_VALUE);
    }
}
